"""
检查两个字符串是否为字母异位词（Anagram），核心是判断它们是否包含相同的字符且每个字符的出现次数完全相同（与字符顺序无关）。
例如，"listen" 和 "silent" 是字母异位词，而 "hello" 和 "world" 不是。

"""
def is_anagram(s, t):
    # 长度不同直接返回False
    if len(s) != len(t):
        return False
    char_count = {}
    for char in s:
        char_count[char] = char_count.get(char, 0) + 1
    for char in t:
        #验证字符匹配性（递减计数并检查异常）遍历字符串 t 中的每个字符 char，对字典中该字符的计数递减 1（模拟 “消耗” 字符）。
        #若某字符的计数变为负数，说明 t 中该字符的数量比 s 多，直接返回 False（例如：s="a"，t="aa"，此时 a 的计数会变为 -1）。
        char_count[char] = char_count.get(char, 0) - 1
        # 若出现次数为负，说明字符不匹配(t中该字符数量多于s)
        if char_count[char] < 0:
            return False
    # 所有字符次数应为0 使用 all() 函数检查字典中所有字符的计数是否为 0。 若所有计数都为 0，说明 s 和 t 的字符及次数完全匹配，返回 True；否则返回 False。
    #all(iterable) 是 Python 的内置函数，用于判断可迭代对象中的所有元素是否都为 True。
    return all(count == 0 for count in char_count.values())

# 测试
if __name__ == "__main__":
    print(is_anagram("anagram", "nagaram"))  # 输出: True
    print(is_anagram("rat", "car"))         # 输出: False

    dic1 = {"name":"lzq","age":20}
    #在 Python 中，dict_values 是字典（dict）的一种内置视图对象（view object），用于表示字典中所有值的集合。它不是独立的数据类型，而是字典的一个属性返回的特殊对象，专门用于访问字典的值。
    #主要特性：
    #1: 动态关联字典dict_values 对象与原字典保持动态关联：当原字典中的值发生变化时，dict_values 会自动反映这些变化（无需重新获取）。
    #2: 可迭代但不可直接修改   dict_values 是可迭代对象（可以用 for 循环遍历），但不支持索引访问（如 values[0] 会报错），也不能直接修改其中的元素（没有 append、pop 等方法）。
    #3:用途：访问字典的值 dict_values 的主要作用是提供一种便捷的方式遍历字典中的所有值，而无需关心对应的键。如果需要对值进行索引或修改，通常会将其转换为列表（list）：
    #d = {'a': 1, 'b': 2}
    # values_list = list(d.values())  # 转换为列表：[1, 2]
    # print(values_list[0])  # 输出：1（支持索引）
    #总结： dict_values 是字典值的动态视图，用于安全、高效地访问字典中的所有值。它本身不存储数据，而是实时关联原字典，适合遍历场景；若需索引或修改，可通过 list() 转换为列表处理。
    print(dic1.values(),type(dic1.values())) #dict_values(['lzq', 20]) <class 'dict_values'>